Do not report versioning findings whose declaring assembly is outside the closure - #1
Closed
sakanni wants to merge 2 commits into
Closed
Do not report versioning findings whose declaring assembly is outside the closure#1sakanni wants to merge 2 commits into
sakanni wants to merge 2 commits into
Conversation
Collaborator
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ci-versioningfailedBHoM/Revit_Toolkit#1688with two findings while BHoMBot'sversioningpassed on the same SHA. Neither finding is a regression, and neither is caused by that PR. Both are dataset entries whose recorded declaring assembly is not in the closure we build:Compute.TryGetValueFromSourceis declared byRevit_ModelQA_Engine_2022, another repo that happens to declare types intoBH.Revit.Engine.CoreCreate.ProjectParameteris declared byRevit_Core_Engine_2024, a configuration we do not buildIn both cases another loaded assembly answered for the type, so the signature probe resolved against code the dataset was never describing, and the finding was counted real. BHoMBot does not have this problem because
CloneInstaller.cs:23builds every alternate configuration and the whole installer set before versioning runs.Two changes, and they need to ship together.
Classifier. When the recorded declaring assembly is absent from the closure and some other assembly answered for the type, the finding is reported as unverified rather than real, split into
ForeignDeclaringAssemblyandConfigurationNotBuiltso the reason is legible. It stays real when nothing answered for the type, which is how a genuine removal presents, and when the family is ours but no configuration of it is loaded at all.altConfigs.
ci-versioningnow builds the calling repo's ownRelease*entries fromaltConfigs.txt. Without this the classifier change is a straight loss of coverage on Revit repos: a method deleted from a configuration we never compile becomes unverified instead of caught. Measured on a sandbox Revit_Toolkit over three runs onwindows-2025-vs2026: 47 to 59 seconds for the first configuration, 4 to 8 seconds for each additional one, 76 seconds total against a 47 second Release-only baseline. That is 1.6x, not the 5x a per-configuration estimate suggests, because the first build carries the warm-up. Build output grows 1.2 MB per configuration.Validation: suite is 100/100 with 13 new cases; four mutations of the classifier and two of the config parsing are each caught by the intended test. Six synthetic dataset entries covering deleted methods, arity changes and moved types stay real on a complete closure, before and after. On a closure shaped like CI's, the two known false positives reclassify and the control finding does not move. Detail in the session note.
Also fixes a counter this change would otherwise desynchronise: the CI_Toolkit#161 ambiguity warning counted every diagnostic while printing detail only for real findings.
Do not merge yet. Building five configurations puts about 25 assemblies in
Build\, which changes the--subject-assembliessurface and should stopConfigurationNotBuiltfiring on Revit repos at all. That combination is the one that ships and it has not been run end to end. A sandbox run ofci-versioningwith both changes on a Revit repo is the gate